# @Time    :2025/3/30 19:35
"""
面向过程与面向对象转换
题目：假设有一个简单的电商系统，使用面向过程的方式实现商品的添加、展示和购买功能。然后将其转换为面向对象的实现方式。
面向过程部分：编写函数 add_product 用于添加商品到列表，
display_products 用于展示所有商品，
purchase_product 用于从列表中移除已购买的商品。
商品用字典表示，包含 name（名称）和 price（价格）。

面向对象部分：创建 Product 类，包含 name 和 price 实例属性，以及 display 方法用于展示商品信息。
创建 ShoppingCart 类，包含一个商品列表属性，
以及 add_product、display_products 和 purchase_product 方法实现相应功能。

"""


# products = []
#
#
# def add_product(name, price):
#     product = {"name": name, "price": price}
#     products.append(product)
#
#
# def display_products():
#     for product in products:
#         print(f"商品名称:{product["name"]},价格:{product["price"]}")
#
#
# def purchase_product(name):
#     for product in products:
#         if product["name"] == name:
#             products.remove(product)
#             break
# add_product("苹果",4)
# add_product("李",8)
# display_products()
# purchase_product("苹果")
#


# 面向对象编程
class Product:
    def __init__(self, name, price):
        self.name = name
        self.price = price

    def display(self):
        print(f"这个商店有{self.name},价格是{self.price}")


class ShoppingCart:
    def __init__(self):
        self.products = []

    def add_product(self, product):
        self.products.append(product)
        print(f"已添加的商品：{product.name}")

    def display_products(self):
        if not self.products:
            print("购物车为空")
        else:
            print("购物车的列表是:")
            for product in self.products:
                product.display()

    def purchase_product(self, name):
        """通过商品名称移除商品（移除第一个匹配项）"""
        # for product in self.products:
        #     if product.name==name:
        #         self.products.remove(product)
        #         break
        for i, product in enumerate(self.products):
            if product.name == name:#如果购物车的商品跟你要购买的商品名字一样就执行
                removed_product = self.products.pop(i)#购物车删除后的商品列表
                print(f"已购买的商品是:{removed_product.name}")
                return
        print(f"未找到商品:{name}")


p1 = Product("苹果", 2)
p2 = Product("橘子", 3)
cart = ShoppingCart()
cart.add_product(p1)
cart.add_product(p2)
cart.display_products()
cart.purchase_product("苹果")  # 删除
cart.display_products()  # 展示
